/* Copyright 2008 Bas van den Berg
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "Words.h"
#include "StringBuilder.h"

using namespace Chronos;
using namespace std;


Words::Words(const string& str) {
	string delimiters = " \n";
	string::size_type lastPos = str.find_first_not_of(delimiters, 0);
	string::size_type pos = str.find_first_of(delimiters, lastPos);

	while (string::npos != pos || string::npos != lastPos) {
		words.push_back(str.substr(lastPos, pos - lastPos));
		lastPos = str.find_first_not_of(delimiters, pos);
		pos = str.find_first_of(delimiters, lastPos);
	}
}


int Words::getCount() const {
    return words.size();
}


const string& Words::operator[] (int index) const {
	return words.at(index);
}


string Words::subString(int start, int end) const {
    StringBuilder temp;
    while (start != end) {
        temp << words.at(start) << ' ';
	    start++;
    }
    temp << words.at(end);
    return (string)temp;
}

